package lanqiaobei2019;

public class _03数的分解 {
    /**
     * 把 2019 分解成 3 个各不相同的正整数之和，并且要求每个正整数都不包含数字 2 和 4，一共有多少种不同的分解方法？
     * 注意交换 3 个整数的顺序被视为同一种方法，例如 1000+1001+18 和 1001+1000+18 被视为同一种。
     */
    public static void main(String[] args) {
        System.out.println(f(2019));
        int count = 0;
        for (int x = 1; x < 2019 ; x ++){
            for (int y = x +1 ;y < 2019 ; y ++){
                for (int z = y +1 ; z < 2019 ; z++){
                    if (x + y + z == 2019 && !String.valueOf(x).contains("2") && !String.valueOf(x).contains("4")
                            && !String.valueOf(y).contains("4") && !String.valueOf(y).contains("2")
                            && !String.valueOf(z).contains("4") && !String.valueOf(z).contains("2")){
                        count ++;
                    }
                }
            }
        }
        System.out.println(count);
    }
    public static int f(int num){
        int count = 0;
        for (int i = 1; i <= num ;i ++){
            if (check(String.valueOf(i))){
                for (int j = i +1 ; j <= num ; j++){
                    if (check(String.valueOf(j))){
                        int k = num - i - j;
                        if (check(String.valueOf(k)) && k > j){
                            count ++;
                        }
                    }
                }
            }
        }
        return count;
    }

    public static boolean check(String s){
        if (s.indexOf('2') != -1 || s.indexOf('4') != -1){
            return false;
        }
        return true;
    }
}
